package edu.software.PBL_Management_System.util;

import edu.software.PBL_Management_System.entity.User;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.Map;

@Controller
public class PageController {

    @Resource
    private DemandUtil demandUtil;

    @Resource
    private IdEncryptionUtil idEncryptionUtil;

    // 登录页面
    @GetMapping("/login")
    public String loginPage() {
        return "login";
    }

    // 根路径 - 主页
    @GetMapping("/")
    public String index() {
        return "index";
    }

    // 明确的index路径 - 主页
    @GetMapping("/index")
    public String indexPage() {
        return "index";
    }

    //加密访问，用于最后的页面集成
    @GetMapping("/user/{encryptedUserId}/requirements")
    public String requirementsPage(@PathVariable String encryptedUserId, Model model) {
        try {
            // 解密用户ID
            Long userId = idEncryptionUtil.decryptId(encryptedUserId);

            // 验证用户是否存在
            User user = demandUtil.getUserById(userId);
            if (user == null) {
                return "redirect:/login";
            }

            // 将用户信息添加到模型中
            model.addAttribute("userId", userId);
            model.addAttribute("userEmail", user.getEmail());
            model.addAttribute("username", user.getUsername());

            // 返回需求页面
            // 根据用户类型返回不同页面
            if ("expert".equals(user.getUsertype())) {
                return "expert";
            } else {
                return "requirementsestablish";
            }
        } catch (Exception e) {
            // 如果解密失败或发生其他错误，重定向到登录页面
            return "redirect:/login";
        }
    }

    /**
     * 更新用户类型
     * @param userId 用户ID
     * @param newUserType 新的用户类型
     * @return 更新结果
     */

    @PostMapping("/api/updateUserType")
    @ResponseBody
    public Map<String, Object> updateUserType(@RequestParam Long userId, @RequestParam String newUserType) {
        Map<String, Object> response = new HashMap<>();

        try {
            // 获取用户
            User user = demandUtil.getUserById(userId);
            if (user == null) {
                response.put("success", false);
                response.put("message", "用户不存在");
                return response;
            }

            // 更新用户类型
            user.setUsertype(newUserType);
            User updatedUser = demandUtil.updateUser(user);

            // 加密用户ID
            String encryptedId = idEncryptionUtil.encryptId(userId);

            response.put("success", true);
            response.put("message", "用户类型更新成功");
            response.put("user", updatedUser);
            response.put("encryptedId", encryptedId);

        } catch (Exception e) {
            response.put("success", false);
            response.put("message", "更新失败: " + e.getMessage());
        }

        return response;
    }
}
